home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / System / BoingBag1 / Contributions / Workbench / ARexx / THE.rexx < prev    next >
OS/2 REXX Batch file  |  1999-12-20  |  21KB  |  750 lines

  1. /*
  2.    $VER: THE.rexx 1.0 (30.9.99) Copyright (c) Nils Görs.
  3.  
  4.    This script is for editing the Tools-Menu and Hotkey functions from Workbench.
  5.  
  6.    The script creates an ARexx-Script that will be placed in WBStartup. You have
  7.    to create an Icon for this script to be executed automatically.
  8.  
  9.    This script needs tritonrexx.library and rexxtricks.library.
  10.  
  11. */
  12.  
  13. Scriptname = "Sys:WBStartup/setKeyAndMenu.rexx"
  14. /*
  15. *** Please don't change anything under this line
  16. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
  17.  
  18. OPTIONS RESULTS
  19.  
  20. PARSE ARG PubScreen
  21.  
  22. ADDRESS WORKBENCH
  23.  
  24. IF PubScreen == "?" THEN DO
  25.  OPTIONS PROMPT "PUBSCREEN/K: "
  26.  PARSE PULL PubScreen
  27. END
  28.  
  29. /*
  30. ** Beschreibung der Applikation
  31. */
  32. appname     = 'T.H.E. GUI'
  33. applongname = 'Toolmenu and Hotkey Editor - ©1999 by Nils Görs'
  34. appinfo     = 'Graphical-User-Interface for Workbenchs ToolsMenu and Hotkey functions'
  35. appversion  = '1.0'
  36. apprelease  = '1'
  37. appdate     = '30.9.99'
  38.  
  39. /*
  40. ** Alles öffnen und Variablen initialisieren
  41. */
  42. CALL _InitAll
  43.  
  44.  
  45. /*
  46. ** GUI erstellen.
  47. */
  48. _maintags:
  49. windowtags = WindowID(1),
  50.          PubScreenName(PubScreen),
  51.          WindowBackfillFB,
  52.          WindowTitle(appname appversion),
  53.          QuickHelpOn(HelpBool),
  54.     'HorizGroupA',
  55.      'Space',
  56.       'VertGroupA',
  57.        'Space',
  58. ,
  59.         'HorizGroupA',
  60.         'VertGroupA',
  61.         NamedSeparatorN('ToolsMenu'),
  62.         'ColumnArray',
  63.         ListSSN(ToolsMenuEntries,1,0,0),
  64.         'Space',
  65.         'BeginColumn',
  66.         'HorizGroupAC',
  67.         'VertGroupSAC',
  68.         Button("_Add",6),
  69.         Button("_Remove",7),
  70.         Button("_Up",8),
  71.         Button("_Down",9),
  72.         'EndGroup',
  73.         'EndGroup',
  74.         'EndColumn',
  75.         'EndColumn',
  76.         'Space',
  77.         'LineArray',
  78.         'BeginLine',
  79.             Text3('_Name:') 'TRAT_ID 2',
  80.             StringGadget(ToolsMenuEntry.NAME.1,2),
  81.             QuickHelp("Name of the menu item to add or remove. Each menu item must have"||NL||"a name with which it is associated. The name must be unique and"||NL||"has nothing to do with the title of the item, as shown in the"||NL||'Tools' menu.),
  82.         'EndLine',
  83.         'BeginLine',
  84.             Text3('_Title:') 'TRAT_ID 3',
  85.             StringGadget(ToolsMenuEntry.TITLE.1,3),
  86.             QuickHelp("This is the text that will be used as the menu item title,"||NL||"as it will appear in the 'Tools' menu. This parameter is"||NL||"required if you ADD a new menu item."),
  87.         'EndLine',
  88.         'BeginLine',
  89.             Text3('_ShortCut:') 'TRAT_ID 4',
  90.             StringGadget(ToolsMenuEntry.SHORTCUT.1,4) 'TRAT_Value 1',
  91.             QuickHelp("When adding a new menu item, this will be the menu shortcut"||NL||"associated with the item. If there already is an item in any"||NL||"of the menus which uses this shortcut it will be ignored."||NL||"This parameter is optional."),
  92.         'EndLine',
  93.         'BeginLine',
  94.             Text3('_Command:') 'TRAT_ID 5',
  95.             StringGadget(ToolsMenuEntry.COMMAND.1,5) 'TRAT_Value 255',
  96.             QuickHelp("This is the ARexx command to bind to the new menu item. The"||NL||"command can either be the name of an ARexx script to execute"||NL||"or a short ARexx program in a single line."),
  97.              GetFileButton(51),
  98.         'EndLine',
  99.                'EndArray',
  100.         'SpaceB',
  101.         NamedSeparatorN('Hotkey'),
  102.         'ColumnArray',
  103.         ListSSC(HotkeyEntries,10,0,0),
  104.         'Space',
  105.         'BeginColumn',
  106.         'HorizGroupAC',
  107.         'VertGroupSAC',
  108.         Button("Add_+",14),
  109.         Button("Remo_ve",15),
  110.         'EndGroup',
  111.         'EndGroup',
  112.         'Space',
  113.         'EndColumn',
  114.         'EndColumn',
  115.         'Space',
  116.             'LineArray',
  117.                 'BeginLine',
  118.                     Text3('Nam_e:') 'TRAT_ID 11',
  119.                     StringGadget(HotKeyEntry.NAME.1,11),
  120.                     QuickHelp("Name of the key combination to add or remove. Each key combination"||NL||"must have a name with which it is associated. The name must be unique."),
  121.                 'EndLine',
  122.                 'BeginLine',
  123.                     Text3('_Key:') 'TRAT_ID 12',
  124.                     StringGadget(HotKeyEntry.KEY.1,12),
  125.                     QuickHelp("The keyboard combination to add; this must be in the same format"||NL||"as used by the Commodities programs."),
  126.                      GetEntryButton(121),
  127.                 'EndLine',
  128.                 'BeginLine',
  129.                     Text3('Co_mmand:') 'TRAT_ID 13',
  130.                     StringGadget(HotKeyEntry.COMMAND.1,13) 'TRAT_Value 255',
  131.                     QuickHelp("This is the ARexx command to bind to the new menu item. The"||NL||"command can either be the name of an ARexx script to execute"||NL||"or a short ARexx program in a single line."),
  132.                      GetFileButton(131),
  133.                 'EndLine',
  134.             'EndArray',
  135.         'Space',
  136.         'EndGroup',
  137.         'EndGroup',
  138.                 'BeginLine',
  139.                     Button('Save',20),
  140.                     'SpaceS',
  141.                     Button('Use',21),
  142.                     'SpaceS',
  143.                     Button('Cancel',22),
  144.                 'EndLine',
  145.         'Space',
  146.        'EndGroup',
  147.         'Space',
  148.     'EndGroup',
  149.      'Space',
  150.     'EndProject'
  151.  
  152. app = TR_CREATEAPP('TRCA_Name'     '"'appname'"',
  153.                    'TRCA_LongName' '"'applongname'"',
  154.                    'TRCA_Info'     '"'appinfo'"',
  155.                    'TRCA_Version'  '"'appversion'"',
  156.                    'TRCA_Release'  '"'apprelease'"',
  157.                    'TRCA_Date'     '"'appdate'"',
  158.                    'TAG_END')
  159.  
  160. /*
  161. ** Unterbrechungssignale
  162. */
  163.  
  164. SIGNAL ON break_c
  165. SIGNAL ON failure
  166. SIGNAL ON halt
  167. SIGNAL ON ioerr
  168. SIGNAL ON syntax
  169.  
  170. IF app ~= '00000000'x THEN DO
  171.    window = TR_OPENPROJECT(app,windowtags)
  172.    WindowProject=C2D(window) /* zum Locken des Fensters bei Über */
  173.  
  174.    IF window ~= '00000000'x THEN DO
  175.       ende = 0
  176.  
  177.     CALL TR_SendMessage(Window,1,'TROM_ACTIVATE',1)
  178.  
  179.        DO WHILE ende ~= 1
  180.          CALL TR_WAIT(app,'')
  181.  
  182.          DO WHILE TR_HANDLEMSG(app,'event')
  183. /******************
  184. *** CLOSEGADGET ***
  185. *******************/
  186.     IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN ende = 1
  187.  
  188.     IF event.trm_class = 'TRMS_NEWVALUE' THEN DO
  189.         IF event.trm_id = 1 THEN DO
  190.             Number=event.trm_data+1
  191.             CALL TR_SETATTRIBUTE(window,2,'TROB_String',ToolsMenuEntry.NAME.number)
  192.             CALL TR_SETATTRIBUTE(window,3,'TROB_String',ToolsMenuEntry.TITLE.number)
  193.             CALL TR_SETATTRIBUTE(window,4,'TROB_String',ToolsMenuEntry.SHORTCUT.number)
  194.             CALL TR_SETATTRIBUTE(window,5,'TROB_String',ToolsMenuEntry.COMMAND.number)
  195.         END
  196.  
  197.         IF event.trm_id = 10 THEN DO
  198.             Number=event.trm_data+1
  199.             CALL TR_SETATTRIBUTE(window,11,'TROB_String',HotkeyEntry.NAME.number)
  200.             CALL TR_SETATTRIBUTE(window,12,'TROB_String',HotkeyEntry.KEY.number)
  201.             CALL TR_SETATTRIBUTE(window,13,'TROB_String',HotkeyEntry.COMMAND.number)
  202.         END
  203.  
  204.         IF event.trm_id = 2 THEN DO
  205.             CALL TR_GETATTRIBUTE(window,1,'TRAT_Value')
  206.             tm_value = result+1
  207.             CALL TR_GETATTRIBUTE(window,2,'TROB_String')
  208.             newValue = result
  209.             ToolsMenuEntry.NAME.tm_value = newValue
  210.             ToolsMenuEntries.TM_Value = newValue
  211.             CALL TR_SETATTRIBUTE(window,1,TROB_Listview,ToolsMenuEntries)
  212.         END
  213.  
  214.         IF event.trm_id = 3 THEN DO
  215.             CALL TR_GETATTRIBUTE(window,1,'TRAT_Value')
  216.             tm_value = result+1
  217.             CALL TR_GETATTRIBUTE(window,3,'TROB_String')
  218.             newValue = result
  219.             ToolsMenuEntry.TITLE.tm_value = newValue
  220.         END
  221.  
  222.         IF event.trm_id = 4 THEN DO
  223.             CALL TR_GETATTRIBUTE(window,1,'TRAT_Value')
  224.             tm_value = result+1
  225.             CALL TR_GETATTRIBUTE(window,4,'TROB_String')
  226.             newValue = result
  227.             ToolsMenuEntry.SHORTCUT.tm_value = newValue
  228.         END
  229.  
  230.         IF event.trm_id = 5 THEN DO
  231.             CALL TR_GETATTRIBUTE(window,1,'TRAT_Value')
  232.             tm_value = result+1
  233.             CALL TR_GETATTRIBUTE(window,5,'TROB_String')
  234.             newValue = result
  235.             ToolsMenuEntry.COMMAND.tm_value = newValue
  236.         END
  237.  
  238.         IF event.trm_id = 11 THEN DO
  239.             CALL TR_GETATTRIBUTE(window,10,'TRAT_Value')
  240.             tm_value = result+1
  241.             CALL TR_GETATTRIBUTE(window,11,'TROB_String')
  242.             newValue = result
  243.             HotkeyEntry.NAME.tm_value = newValue
  244.             HotkeyEntries.TM_Value = newValue
  245.             CALL TR_SETATTRIBUTE(window,10,TROB_Listview,HotkeyEntries)
  246.         END
  247.  
  248.         IF event.trm_id = 12 THEN DO
  249.             CALL TR_GETATTRIBUTE(window,10,'TRAT_Value')
  250.             tm_value = result+1
  251.             CALL TR_GETATTRIBUTE(window,12,'TROB_String')
  252.             newValue = result
  253.             HotkeyEntry.KEY.tm_value = newValue
  254.         END
  255.  
  256.         IF event.trm_id = 13 THEN DO
  257.             CALL TR_GETATTRIBUTE(window,10,'TRAT_Value')
  258.             tm_value = result+1
  259.             CALL TR_GETATTRIBUTE(window,13,'TROB_String')
  260.             newValue = result
  261.             HotkeyEntry.COMMAND.tm_value = newValue
  262.         END
  263.  
  264.     END
  265.  
  266.     IF event.trm_class = 'TRMS_ACTION' THEN DO
  267.         SELECT
  268.             WHEN event.trm_id = 20 THEN CALL _Save
  269.             WHEN event.trm_id = 21 THEN CALL _Use
  270.             WHEN event.trm_id = 22 THEN ende = 1
  271.             WHEN event.trm_id = 6 THEN CALL _AddMenu
  272.             WHEN event.trm_id = 7 THEN CALL _RemoveMenu
  273.             WHEN event.trm_id = 8 THEN DO
  274.                 Position = TR_GETATTRIBUTE(window,1,'TRAT_Value')+1
  275.                 CALL _MenuUp(Position)
  276.             END
  277.             WHEN event.trm_id = 9 THEN DO
  278.                 Position = TR_GETATTRIBUTE(window,1,'TRAT_Value')+1
  279.                 CALL _MenuDown(Position)
  280.             END
  281.  
  282.             WHEN event.trm_id = 14 THEN CALL _AddKey
  283.             WHEN event.trm_id = 15 THEN CALL _RemoveKey
  284.  
  285.             WHEN event.trm_id = 51 then DO
  286.                 CALL _FileRequest
  287.                 IF filename.1 ~= "FILENAME.1" THEN DO
  288.                     CALL TR_GETATTRIBUTE(window,1,'TRAT_Value')
  289.                     tm_value = result+1
  290.                     ToolsMenuEntry.COMMAND.tm_value = Filename.1
  291.                     CALL TR_SETATTRIBUTE(window,5,'TROB_String',Filename.1)
  292.                 END
  293.             END
  294.  
  295.             WHEN event.trm_id = 131 then DO
  296.                 CALL _FileRequest
  297.                 IF filename.1 ~= "FILENAME.1" THEN DO
  298.                     CALL TR_GETATTRIBUTE(window,10,'TRAT_Value')
  299.                     tm_value = result+1
  300.                     HotkeyEntry.COMMAND.tm_value = Filename.1
  301.                     CALL TR_SETATTRIBUTE(window,13,'TROB_String',Filename.1)
  302.                 END
  303.             END
  304.             WHEN event.trm_id = 121 then DO
  305.                 NewHotkey = SelectHotkey()
  306.                 IF newHotKey ~= 0 THEN DO
  307.                     CALL TR_GETATTRIBUTE(window,10,'TRAT_Value')
  308.                     tm_value = result+1
  309.                     HotkeyEntry.KEY.tm_value = Newhotkey
  310.                     CALL TR_SETATTRIBUTE(window,12,'TROB_String',Newhotkey)
  311.                 END
  312.             END
  313.         OTHERWISE
  314.             NOP
  315.         END
  316.  
  317.     END
  318.  
  319. /* große Schleife! */
  320.          END
  321.       END
  322.       CALL TR_CLOSEPROJECT(window)
  323.    END
  324.    CALL TR_DELETEAPP(app)
  325.  
  326. EXIT
  327.  
  328. _InitAll:
  329. NL    = '0a'x
  330. TRUE    = 1
  331. FALSE    = 0
  332. HelpBool= 0
  333.  
  334. Hotkey.0 = 18
  335. Hotkey.1 = "LSHIFT"
  336. Hotkey.2 = "RSHIFT"
  337. Hotkey.3 = "LAMIGA"
  338. Hotkey.4 = "RAMIGA"
  339. Hotkey.5 = "LALT"
  340. Hotkey.6 = "RALT"
  341. Hotkey.7 = "ESC"
  342. Hotkey.8 = "RETURN"
  343. Hotkey.9 = "DEL"
  344. Hotkey.10= "HELP"
  345. Hotkey.11= "CTRL"
  346. Hotkey.12= "CAPSLOCK"
  347. Hotkey.13= "NUMERICPAD"
  348. Hotkey.14= "ENTER"
  349. Hotkey.15= "BACKSPACE"
  350. Hotkey.16= "SPACE"
  351. Hotkey.17= "COMMA"
  352. Hotkey.18= "UPSTROKE"
  353.  
  354.  
  355. /*
  356. ** Open libs
  357. */
  358.  
  359.    IF ~SHOW('LIBRARIES','tritonrexx.library') THEN
  360.       IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN
  361.          quit('Cannot open tritonrexx.library!',10)
  362.  
  363.    IF ~SHOW(LIBRARIES,'rexxtricks.library') THEN
  364.       IF ~ADDLIB('rexxtricks.library',9,-30,38) THEN
  365.          quit('Cannot open rexxtricks.library!',10)
  366.  
  367. /*
  368. ** Getdefault PubScreen
  369. */
  370. IF PubScreen == "" THEN
  371.    PubScreen = RXTR_GETDEFAULTPUBSCREEN()
  372.  
  373.  
  374. CALL _GetMenuAndHotkey
  375.  
  376. RETURN
  377.  
  378. _GetMenuAndHotkey:
  379. /* hole Tools-Menu */
  380. GETATTR MENUCOMMANDS.COUNT
  381. ToolsMenuEntries.0 = result
  382. ToolsMenuEntry.0 = result
  383.  
  384. ToolsMenuEntry.NAME.0     = ToolsMenuEntry.0
  385. ToolsMenuEntry.TITLE.0    = ToolsMenuEntry.0
  386. ToolsMenuEntry.SHORTCUT.0 = ToolsMenuEntry.0
  387. ToolsMenuEntry.COMMAND.0  = ToolsMenuEntry.0
  388.  
  389. ToolsMenuEntry.NAME.1     = ""
  390. ToolsMenuEntry.TITLE.1    = ""
  391. ToolsMenuEntry.SHORTCUT.1 = ""
  392. ToolsMenuEntry.COMMAND.1  = ""
  393.  
  394. IF ToolsMenuEntries.0 ~= 0 THEN DO
  395.     e = 0
  396.     DO i = 0 to ToolsMenuEntries.0-1
  397.         e = e +1
  398.         GETATTR MENUCOMMANDS.i.NAME
  399.         Name1 = result
  400.         GETATTR MENUCOMMANDS.i.TITLE
  401.         Title1 = result
  402.         GETATTR MENUCOMMANDS.i.SHORTCUT
  403.         ShortCut1 = result
  404.         GETATTR MENUCOMMANDS.i.COMMAND
  405.         Command1 = result
  406.  
  407.         ToolsMenuEntries.e = name1
  408.         ToolsMenuEntry.NAME.e = name1
  409.         ToolsMenuEntry.TITLE.e = title1
  410.         ToolsMenuEntry.SHORTCUT.e = shortcut1
  411.         ToolsMenuEntry.COMMAND.e = command1
  412.     END
  413. END
  414.  
  415. /* hole Workbench Hotkeys */
  416.  
  417. GETATTR KEYCOMMANDS.COUNT
  418. HotkeyEntries.0 = result
  419. HotkeyEntry.0 = result
  420.  
  421. HotKeyEntry.NAME.0 = HotkeyEntry.0
  422. HotKeyEntry.KEY.0 = HotkeyEntry.0
  423. HotKeyEntry.COMMAND.0 = HotkeyEntry.0
  424. HotkeyEntry.NAME.1 = ""
  425. HotkeyEntry.KEY.1 = ""
  426. HotkeyEntry.COMMAND.1 = ""
  427.  
  428. IF HotkeyEntries.0 ~= 0 THEN DO
  429.     e = 0
  430.     DO i = 0 to HotkeyEntries.0-1
  431.         e = e +1
  432.         GETATTR KEYCOMMANDS.i.NAME
  433.         Name1 = result
  434.         GETATTR KEYCOMMANDS.i.KEY
  435.         ShortCut1 = result
  436.         GETATTR KEYCOMMANDS.i.COMMAND
  437.         Command1 = result
  438.         HotkeyEntries.e = name1
  439.         HotkeyEntry.NAME.e = name1
  440.         HotkeyEntry.KEY.e = ShortCut1
  441.         HotkeyEntry.COMMAND.e = command1
  442.     END
  443. END
  444. RETURN
  445.  
  446. _Save:
  447.     CALL OPEN(file,scriptname,write)
  448.     CALL WRITELN(file,"/*created with T.H.E.*/"||NL||"ADDRESS WORKBENCH")
  449.  
  450.     DO i = 1 to HotkeyEntry.0
  451.         CALL WRITELN(file,KEYBOARD ADD NAME '"'||HotkeyEntry.NAME.i||'"' KEY '''"'||HotkeyEntry.KEY.i||'"''' CMD '"'||HotkeyEntry.COMMAND.i||'"')
  452.     END
  453.  
  454.     CALL WRITELN(file,"")
  455.  
  456.     DO i = 1 to ToolsMenuEntry.0
  457.         IF ToolsMenuEntry.SHORTCUT.i = "" THEN CALL WRITELN(file,MENU ADD NAME '"'||ToolsMenuEntry.NAME.i||'"' TITLE '"'||ToolsMenuEntry.TITLE.i||'"' CMD '"'||ToolsMenuEntry.COMMAND.i||'"')
  458.                         ELSE CALL WRITELN(file,MENU ADD NAME '"'||ToolsMenuEntry.NAME.i||'"' TITLE '"'||ToolsMenuEntry.TITLE.i||'"' SHORTCUT '"'||ToolsMenuEntry.SHORTCUT.i||'"' CMD '"'||ToolsMenuEntry.COMMAND.i||'"')
  459.     END
  460.     CALL CLOSE(file)
  461. RETURN
  462.  
  463. _Use:
  464.     CALL _RemoveMenuHotkeys
  465.     Scriptname.bak = Scriptname
  466.     Scriptname = "t:myscript"
  467.     CALL _Save
  468.     RX scriptname
  469.     DELETE scriptname
  470.     Scriptname = Scriptname.bak
  471. RETURN
  472.  
  473. _RemoveMenuHotkeys:
  474.     GETATTR KEYCOMMANDS.COUNT
  475.     clearkey = result
  476.     DO i = clearKey - 1 to 0 BY - 1
  477.         GETATTR KEYCOMMANDS.i.NAME
  478.         name1 = result
  479.         KEYBOARD NAME name1 REMOVE
  480.     END
  481.  
  482.     GETATTR MENUCOMMANDS.COUNT
  483.     clearMenu = result
  484.     DO i = clearMenu - 1 to 0 BY - 1
  485.         GETATTR MENUCOMMANDS.i.NAME
  486.         name1 = result
  487.         MENU NAME name1 REMOVE
  488.     END
  489. RETURN
  490.  
  491. _AddMenu:
  492.     CALL TR_GETATTRIBUTE(window,1,'TRAT_Value')
  493.     TM_Value = result+1
  494.  
  495.     IF toolsmenuentries.0 = 0 THEN DO
  496.         ToolsMenuEntries.1        = "New"
  497.         ToolsMenuEntry.NAME.1        = "New"
  498.         ToolsMenuEntry.TITLE.1        = "New"
  499.         ToolsMenuEntry.SHORTCUT.1    = ""
  500.         ToolsMenuEntry.COMMAND.1    = "New"
  501.         ToolsMenuEntries.0        = 1
  502.         ToolsMenuEntry.0        = 1
  503.         ToolsMenuEntry.NAME.0        = 1
  504.         ToolsMenuEntry.TITLE.0        = 1
  505.         ToolsMenuEntry.SHORTCUT.0    = 1
  506.         ToolsMenuEntry.COMMAND.0    = 1
  507.     END
  508.     ELSE DO
  509.         CALL RXTR_STEMINSERT(ToolsMenuEntries,TM_Value,1,"New")
  510.         CALL RXTR_STEMINSERT(ToolsMenuEntry.NAME,TM_Value,1,"New")
  511.         CALL RXTR_STEMINSERT(ToolsMenuEntry.TITLE,TM_Value,1,"New")
  512.         CALL RXTR_STEMINSERT(ToolsMenuEntry.SHORTCUT,TM_Value,1,"")
  513.         CALL RXTR_STEMINSERT(ToolsMenuEntry.COMMAND,TM_Value,1,"New")
  514.     END
  515.     toolsmenuentry.0 = toolsmenuentries.0        /* how many entries? */
  516.     CALL _UpdateTMStrings
  517.  
  518.     CALL TR_SETATTRIBUTE(window,1,TROB_Listview,ToolsMenuEntries)
  519. RETURN
  520.  
  521. _RemoveMenu:
  522.     IF ToolsMenuEntries.0 = 0 THEN RETURN
  523.     CALL TR_GETATTRIBUTE(window,1,'TRAT_Value')
  524.     TM_Value = result+1
  525.     CALL RXTR_STEMREMOVE(ToolsMenuEntries,TM_Value,1)
  526.     CALL RXTR_STEMREMOVE(ToolsMenuEntry.NAME,TM_Value,1)
  527.     CALL RXTR_STEMREMOVE(ToolsMenuEntry.TITLE,TM_Value,1)
  528.     CALL RXTR_STEMREMOVE(ToolsMenuEntry.SHORTCUT,TM_Value,1)
  529.     CALL RXTR_STEMREMOVE(ToolsMenuEntry.COMMAND,TM_Value,1)
  530.  
  531.     CALL TR_SETATTRIBUTE(window,1,TROB_Listview,ToolsMenuEntries)
  532.  
  533.     CALL TR_GETATTRIBUTE(window,1,'TRAT_Value')
  534.     TM_Value = result+1
  535.     CALL _UpdateTMStrings
  536. RETURN
  537.  
  538. _UpdateTMStrings:
  539.     CALL TR_SETATTRIBUTE(window,2,'TROB_String',ToolsMenuEntry.NAME.TM_Value)
  540.     CALL TR_SETATTRIBUTE(window,3,'TROB_String',ToolsMenuEntry.TITLE.TM_Value)
  541.     CALL TR_SETATTRIBUTE(window,4,'TROB_String',ToolsMenuEntry.SHORTCUT.TM_Value)
  542.     CALL TR_SETATTRIBUTE(window,5,'TROB_String',ToolsMenuEntry.COMMAND.TM_Value)
  543. RETURN
  544.  
  545. _UpdateHotKeyStrings:
  546.     CALL TR_SETATTRIBUTE(window,11,'TROB_String',HotkeyEntry.NAME.TM_Value)
  547.     CALL TR_SETATTRIBUTE(window,12,'TROB_String',HotkeyEntry.KEY.TM_Value)
  548.     CALL TR_SETATTRIBUTE(window,13,'TROB_String',HotkeyEntry.COMMAND.TM_Value)
  549. RETURN
  550.  
  551.  
  552. _AddKey:
  553.     CALL TR_GETATTRIBUTE(window,10,'TRAT_Value')
  554.     TM_Value = result+1
  555.  
  556.     IF HotkeyEntries.0 = 0 THEN DO
  557.         HotkeyEntries.1        = "New"
  558.         HotkeyEntry.NAME.1    = "New"
  559.         HotkeyEntry.KEY.1    = ""
  560.         HotkeyEntry.COMMAND.1    = "New"
  561.         HotkeyEntries.0        = 1
  562.         HotkeyEntry.0        = 1
  563.         HotkeyEntry.NAME.0    = 1
  564.         HotkeyEntry.KEY.0    = 1
  565.         HotkeyEntry.COMMAND.0    = 1
  566.     END
  567.     ELSE DO
  568.         CALL RXTR_STEMINSERT(HotkeyEntries,TM_Value,1,"New")
  569.         CALL RXTR_STEMINSERT(HotkeyEntry.NAME,TM_Value,1,"New")
  570.         CALL RXTR_STEMINSERT(HotkeyEntry.KEY,TM_Value,1,"")
  571.         CALL RXTR_STEMINSERT(HotkeyEntry.COMMAND,TM_Value,1,"New")
  572.  
  573.     END
  574.     Hotkeyentry.0 = HotkeyEntries.0        /* how many entries? */
  575.     CALL _UpdateHotKeyStrings
  576.  
  577.     CALL TR_SETATTRIBUTE(window,10,TROB_Listview,HotkeyEntries)
  578.  
  579. RETURN
  580.  
  581. _RemoveKey:
  582.     CALL TR_GETATTRIBUTE(window,10,'TRAT_Value')
  583.     TM_Value = result+1
  584.  
  585.     IF HotKeyEntries.0 = 0 THEN RETURN
  586.  
  587.     CALL RXTR_STEMREMOVE(HotkeyEntries,TM_Value,1)
  588.     CALL RXTR_STEMREMOVE(HotKeyEntry.NAME,TM_Value,1)
  589.     CALL RXTR_STEMREMOVE(HotKeyEntry.KEY,TM_Value,1)
  590.     CALL RXTR_STEMREMOVE(HotKeyEntry.COMMAND,TM_Value,1)
  591.  
  592.     CALL TR_SETATTRIBUTE(window,10,TROB_Listview,HotkeyEntries)
  593.  
  594.     CALL _UpdateHotKeyStrings
  595.  
  596. RETURN
  597.  
  598. /*
  599. ** Hotkey auswählen
  600. */
  601. SelectHotkey:
  602. hotkeyswindowtags = ,
  603.    WindowID(2),
  604.    WindowPosition('TRWP_MOUSEPOINTER'),
  605.    WindowTitle('Select hotkey'),
  606.    WindowFlags('TRWF_NOESCCLOSE'),
  607.    PubScreenName(pubscreen),
  608.    'VertGroupA',
  609.       'Space',
  610.       'HorizGroupA',
  611.          'Space',
  612.          ListSS('Hotkey',201,0,0),
  613.          'Space',
  614.       'EndGroup',
  615.       'Space',
  616.       'HorizSeparator',
  617.       'Space',
  618.       'HorizGroupA',
  619.          'Space',
  620.          ButtonR('_USE',298),
  621.          ButtonE('_CANCEL',299),
  622.          'Space',
  623.       'EndGroup',
  624.       'Space',
  625.    'EndGroup EndProject'
  626.  
  627.    hotkeyswindow = TR_OPENPROJECT(app,hotkeyswindowtags)
  628.  
  629.    IF hotkeyswindow ~= '00000000'x THEN DO
  630.       CALL TR_LOCKPROJECT(window)
  631.  
  632.       quithotkeyswindow = FALSE
  633.  
  634.       DO WHILE ~quithotkeyswindow
  635.          CALL TR_WAIT(app,'')
  636.  
  637.          DO WHILE TR_HANDLEMSG(app,'event')
  638.             IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN DO
  639.                quithotkeyswindow = TRUE
  640.           selectedhotkeys = FALSE
  641.         END
  642.  
  643.             IF event.trm_class = 'TRMS_ACTION' THEN DO
  644.                IF event.trm_id = 298 THEN DO
  645.                   selectedhotkeys = hotkey.number
  646.                   quithotkeyswindow = TRUE
  647.                END
  648.  
  649.                IF event.trm_id = 299 THEN DO
  650.                   quithotkeyswindow = TRUE
  651.           selectedhotkeys = FALSE
  652.         END
  653.             END
  654.  
  655.             IF event.trm_class = 'TRMS_NEWVALUE' & event.trm_id = 201 THEN DO
  656.                number = event.trm_data+1
  657.  
  658.                IF BITAND(D2X(event.trm_qualifier),'0200'x) = '0200'x THEN DO
  659.                   selectedhotkeys = hotkey.number
  660.                   quithotkeyswindow = TRUE
  661.                END
  662.             END
  663.          END
  664.       END
  665.  
  666.       CALL TR_CLOSEPROJECT(hotkeyswindow)
  667.       CALL TR_UNLOCKPROJECT(window)
  668.    END
  669.  
  670.    RETURN(selectedhotkeys)
  671.  
  672. _FileRequest:
  673.         bool = ASL_RequestFile(window,filename,,
  674.                 "ASLFR_PubScreenName" PubScreen,
  675.                 "ASLFR_InitialDrawer" "REXX:",
  676.                 "ASLFR_TitleText" '"Please select Arexx-Script"')
  677. RETURN
  678.  
  679. _MenuUp:
  680. PARSE ARG Position
  681. IF position = 1 THEN RETURN
  682.  
  683. Keep1 = ToolsMenuEntries.position
  684. Keep2 = ToolsMenuEntry.NAME.position
  685. Keep3 = ToolsMenuEntry.TITLE.position
  686. Keep4 = ToolsMenuEntry.SHORTCUT.position
  687. Keep5 = ToolsMenuEntry.COMMAND.position
  688.  
  689. CALL RXTR_STEMREMOVE(ToolsMenuEntries,Position,1)
  690. CALL RXTR_STEMREMOVE(ToolsMenuEntry.NAME,Position,1)
  691. CALL RXTR_STEMREMOVE(ToolsMenuEntry.TITLE,Position,1)
  692. CALL RXTR_STEMREMOVE(ToolsMenuEntry.SHORTCUT,Position,1)
  693. CALL RXTR_STEMREMOVE(ToolsMenuEntry.COMMAND,Position,1)
  694.  
  695. NewPosition = Position-1
  696.  
  697. CALL _STEMInsert
  698. TM_Value = position
  699. CALL _UpdateTMStrings
  700. CALL TR_SETATTRIBUTE(window,1,'TROB_Listview',ToolsMenuEntries)
  701. RETURN
  702.  
  703. _MenuDown:
  704. PARSE ARG Position
  705. IF position >= ToolsMenuEntries.0 THEN RETURN
  706.  
  707. Keep1 = ToolsMenuEntries.position
  708. Keep2 = ToolsMenuEntry.NAME.position
  709. Keep3 = ToolsMenuEntry.TITLE.position
  710. Keep4 = ToolsMenuEntry.SHORTCUT.position
  711. Keep5 = ToolsMenuEntry.COMMAND.position
  712.  
  713. CALL RXTR_STEMREMOVE(ToolsMenuEntries,Position,1)
  714. CALL RXTR_STEMREMOVE(ToolsMenuEntry.NAME,Position,1)
  715. CALL RXTR_STEMREMOVE(ToolsMenuEntry.TITLE,Position,1)
  716. CALL RXTR_STEMREMOVE(ToolsMenuEntry.SHORTCUT,Position,1)
  717. CALL RXTR_STEMREMOVE(ToolsMenuEntry.COMMAND,Position,1)
  718.  
  719. NewPosition = Position+1
  720.  
  721. CALL _STEMInsert
  722. TM_Value = position
  723. CALL _UpdateTMStrings
  724. CALL TR_SETATTRIBUTE(window,1,'TROB_Listview',ToolsMenuEntries)
  725. RETURN
  726.  
  727. _STEMInsert:
  728. IF NewPosition > ToolsMenuEntries.0 THEN DO
  729.     ToolsMenuEntries.0 = NewPosition
  730.     ToolsMenuEntry.NAME.0     = NewPosition
  731.     ToolsMenuEntry.TITLE.0    = NewPosition
  732.     ToolsMenuEntry.SHORTCUT.0 = NewPosition
  733.     ToolsMenuEntry.COMMAND.0  = NewPosition
  734.  
  735.     ToolsMenuEntries.NewPosition     = keep1
  736.     ToolsMenuEntry.NAME.NewPosition     = keep2
  737.     ToolsMenuEntry.TITLE.NewPosition    = keep3
  738.     ToolsMenuEntry.SHORTCUT.NewPosition = keep4
  739.     ToolsMenuEntry.COMMAND.NewPosition  = keep5
  740. END
  741.     ELSE DO
  742.         CALL RXTR_STEMINSERT(ToolsMenuEntries,NewPosition,1,keep1)
  743.         CALL RXTR_STEMINSERT(ToolsMenuEntry.NAME,NewPosition,1,keep2)
  744.         CALL RXTR_STEMINSERT(ToolsMenuEntry.TITLE,NewPosition,1,keep3)
  745.         CALL RXTR_STEMINSERT(ToolsMenuEntry.SHORTCUT,NewPosition,1,keep4)
  746.         CALL RXTR_STEMINSERT(ToolsMenuEntry.COMMAND,NewPosition,1,keep5)
  747.     END
  748. RETURN
  749.